package com.yqh.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/**
 * 跨源资源共享配置类
 *
 * @author 阳秋豪
 * @createTime 2024/3/27
 */
@Configuration
public class CorsConfig {
    /*
     * @Configuration：这个注解表示该类是Spring应用程序上下文的配置类。
     * @Bean：这个注解标记方法为一个Bean定义方法，它产生一个由Spring容器管理的Bean。
     * @CorsFilter：这是Spring框架中实现CORS过滤器逻辑的类。
     * @UrlBasedCorsConfigurationSource：这个类用于根据URL模式配置CORS。
     * @CorsConfiguration：这个类表示CORS配置，你可以在其中指定允许的来源、头部和方法。
     * */
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 设置访问源地址，允许来自任何来源的请求。
        corsConfiguration.addAllowedHeader("*"); // 设置访问源请求头，允许带有任何头部的请求。
        corsConfiguration.addAllowedMethod("*"); // 设置访问源请求方法，允许使用任何HTTP方法（GET、POST、PUT、DELETE等）的请求。
        source.registerCorsConfiguration("/**", corsConfiguration); // 对接口配置跨域设置，为所有URL模式（/**）注册CORS配置。
        return new CorsFilter(source);
    }
}
